<?php
class clsUpload {
	private $NOME, $PASTA, $CAMPO, $TIPO, $LARGURA, $ALTURA, $EXTENSAO;
	function __construct($CAMPO, $NOME, $PASTA) {
		$this->CAMPO = $CAMPO;
		$tipo = $_FILES [$this->CAMPO] ['tmp_name'];
		$imnfo = getimagesize ( $tipo );
		$this->TIPO = $imnfo ['mime'];
		$this->LARGURA = $imnfo [0];
		$this->ALTURA = $imnfo [1];
		$arquivo = pathinfo ( $_FILES [$this->CAMPO] ['name'] );
		$this->EXTENSAO = '.' . $arquivo ['extension'];
		$this->PASTA = $PASTA;
		$this->NOME = $NOME;
	}
	public function getExtensao() {
		return $this->EXTENSAO;
	}
	public function largura($tamanho, $up = true) {
		if ($up == true)
			copy ( $_FILES [$this->CAMPO] ['tmp_name'], $this->PASTA . $this->NOME . $this->EXTENSAO );
		
		$nome = $this->NOME;
		$pasta = $this->PASTA;
		if ($this->ALTURA > $tamanho) {
			$caminho = $pasta . $nome . $this->EXTENSAO;
			if ($this->TIPO == 'image/jpeg')
				$imagem_orig = imagecreatefromjpeg ( $caminho );
			elseif ($this->TIPO == 'image/png')
				$imagem_orig = imagecreatefrompng ( $caminho );
			elseif ($this->TIPO == 'image/gif')
				$imagem_orig = imagecreatefromgif ( $caminho );
			
			$pontoX = imagesx ( $imagem_orig );
			$pontoY = imagesy ( $imagem_orig );
			$fator = ($pontoY / $pontoX);
			$altura = ($tamanho * $fator);
			$imagem_fin = imagecreatetruecolor ( $tamanho, $altura );
			imagecopyresampled ( $imagem_fin, $imagem_orig, 0, 0, 0, 0, $tamanho, $altura, $pontoX, $pontoY );
			imagejpeg ( $imagem_fin, $pasta . $nome . $this->EXTENSAO, 100 );
			imagedestroy ( $imagem_orig );
		}
		return $nome . $this->EXTENSAO;
	}
	public function altura($tamanho, $up = true) {
		if ($up == true)
			copy ( $_FILES [$this->CAMPO] ['tmp_name'], $this->PASTA . $this->NOME . $this->EXTENSAO );
		
		$nome = $this->NOME;
		$pasta = $this->PASTA;
		if ($this->ALTURA > $tamanho) {
			$caminho = $pasta . $nome . $this->EXTENSAO;
			if ($this->TIPO == 'image/jpeg')
				$imagem_orig = imagecreatefromjpeg ( $caminho );
			elseif ($this->TIPO == 'image/png')
				$imagem_orig = imagecreatefrompng ( $caminho );
			elseif ($this->TIPO == 'image/gif')
				$imagem_orig = imagecreatefromgif ( $caminho );
			$pontoX = imagesx ( $imagem_orig );
			$pontoY = imagesy ( $imagem_orig );
			$fator = ($pontoX / $pontoY);
			$altura = ($tamanho * $fator);
			$imagem_fin = imagecreatetruecolor ( $altura, $tamanho );
			imagecopyresampled ( $imagem_fin, $imagem_orig, 0, 0, 0, 0, $altura, $tamanho, $pontoX, $pontoY );
			imagejpeg ( $imagem_fin, $pasta . $nome . $this->EXTENSAO, 100 );
			imagedestroy ( $imagem_orig );
		}
		return $nome . $this->EXTENSAO;
	}
	public function redimencionar($largura, $altura, $up = true) {
		if ($up == true)
			copy ( $_FILES [$this->CAMPO] ['tmp_name'], $this->PASTA . $this->NOME . $this->EXTENSAO );
		if ($this->LARGURA < $largura) {
			$img = $this->altura ( $altura, false );
			$img = $this->largura ( $largura, false );
		} else {
			$img = $this->largura ( $largura, false );
			$img = $this->altura ( $altura, false );
		}
		return $img;
	}
	public function deletarImagem() {
		unlink ( $this->PASTA . $this->NOME . $this->EXTENSAO );
	}
	public function subirNormal() {
		return $this->NOME . $this->EXTENSAO;
	}
	public function sizeArquivo() {
		$arquivo = $_FILES [$this->CAMPO] ['tmp_name'];
		$tamanhoarquivo = filesize ( $arquivo );
		
		$medidas = array (
				'KB',
				'MB',
				'GB',
				'TB' 
		);
		
		if ($tamanhoarquivo < 999) {
			$tamanhoarquivo = 1000;
		}
		
		for($i = 0; $tamanhoarquivo > 999; $i ++) {
			$tamanhoarquivo /= 1024;
		}
		
		return round ( $tamanhoarquivo ) . $medidas [$i - 1];
	}
}
?>